using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._SpatialStatisticsTools._MappingClusters
{
    /// <summary>
    /// <para>Similarity Search</para>
    /// <para>Identifies which candidate features are most similar or most dissimilar to one or more input features based on feature attributes.</para>
    /// <para>根据要素属性确定哪些候选要素与一个或多个输入要素最相似或最不相似。</para>
    /// </summary>    
    [DisplayName("Similarity Search")]
    public class SimilaritySearch : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public SimilaritySearch()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_Input_Features_To_Match">
        /// <para>Input Features To Match</para>
        /// <para><xdoc>
        ///   <para>The layer, or a selection on a layer, containing the features you want to match; you are searching for other features that look like these features. When more than one feature is provided, matching is based on attribute averages.</para>
        ///   <para>
        ///     <para>When the Input Features To Match and Candidate Features values are from a single dataset layer, you can do the following:
        ///     <bulletList>
        ///       <bullet_item>Copy the layer to the Contents pane, making a duplicate layer.  </bullet_item><para/>
        ///       <bullet_item>Rename the duplicate layer.  </bullet_item><para/>
        ///       <bullet_item>On the renamed layer, make a selection or set a definition query for the reference features you want to match. Use the new layer created for the Input Features To Match parameter.  </bullet_item><para/>
        ///       <bullet_item>Apply a selection or set a definition query on the original layer so it excludes the reference features. This will be the layer to use for the Candidate Features parameter.  </bullet_item><para/>
        ///     </bulletList>
        ///     </para>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>图层或图层上的选择，包含要匹配的要素;您正在搜索类似于这些功能的其他功能。当提供多个要素时，匹配将基于属性平均值。</para>
        ///   <para>
        /// <para>当要匹配的输入要素和候选要素值来自单个数据集图层时，可以执行以下操作：
        ///     <bulletList>
        ///       <bullet_item>将图层复制到内容窗格，创建复制图层。</bullet_item><para/>
        ///       <bullet_item>重命名复制图层。</bullet_item><para/>
        ///       <bullet_item>在重命名的图层上，为要匹配的参考要素进行选择或设置定义查询。使用为要匹配的输入要素参数创建的新图层。 </bullet_item><para/>
        ///       <bullet_item>在原始图层上应用选择或设置定义查询，使其排除参考要素。这将是用于候选要素参数的图层。 </bullet_item><para/>
        ///     </bulletList>
        /// </para>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_Candidate_Features">
        /// <para>Candidate Features</para>
        /// <para><xdoc>
        ///   <para>The layer, or a selection on a layer, containing candidate matching features. The tool will check for features most similar (or most dissimilar) to the Input Features To Match values among these candidates.</para>
        ///   <para>When the Input Features To Match and Candidate Features values are from a single dataset layer, you can do the following:
        ///   <bulletList>
        ///     <bullet_item>Copy the layer to the Contents pane, making a duplicate layer.  </bullet_item><para/>
        ///     <bullet_item>Rename the duplicate layer.  </bullet_item><para/>
        ///     <bullet_item>On the renamed layer, make a selection or set a definition query for the reference features you want to match. Use the new layer created for the Input Features To Match parameter.  </bullet_item><para/>
        ///     <bullet_item>Apply a selection or set a definition query on the original layer so it excludes the reference features. This will be the layer to use for the Candidate Features parameter.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>图层或图层上的选择，包含候选匹配要素。该工具将检查与这些候选项中的输入要素匹配值最相似（或最不相似）的特征。</para>
        /// <para>当要匹配的输入要素和候选要素值来自单个数据集图层时，可以执行以下操作：
        ///   <bulletList>
        ///     <bullet_item>将图层复制到内容窗格，创建复制图层。</bullet_item><para/>
        ///     <bullet_item>重命名复制图层。</bullet_item><para/>
        ///     <bullet_item>在重命名的图层上，为要匹配的参考要素进行选择或设置定义查询。使用为要匹配的输入要素参数创建的新图层。 </bullet_item><para/>
        ///     <bullet_item>在原始图层上应用选择或设置定义查询，使其排除参考要素。这将是用于候选要素参数的图层。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_Output_Features">
        /// <para>Output Features</para>
        /// <para>The output feature class containing a record for each of the Input Features To Match values and for all the solution-matching features found.</para>
        /// <para>输出要素类，包含每个“要匹配的输入要素”值以及找到的所有解决方案匹配要素的记录。</para>
        /// </param>
        /// <param name="_Collapse_Output_To_Points">
        /// <para>Collapse Output To Points</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the geometry for the Output Features parameter will be collapsed to points or will match the original geometry (lines or polygons) of the input features if the Input Features To Match and Candidate Features parameter values are both either lines or polygons. This parameter is only available with an Desktop Advanced license. Checking this parameter will improve tool performance for large line and polygon datasets.
        ///   <bulletList>
        ///     <bullet_item>Checked—The line and polygon features will be represented as feature centroids (points).  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The output geometry will match the line or polygon geometry of the input features. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定输出要素参数的几何是折叠为点，还是在输入要素的原始几何（线或面）匹配（如果要匹配的输入要素和候选要素参数值均为直线或面）。此参数仅适用于 Desktop Advanced 许可证。选中此参数将提高大型线和面数据集的工具性能。
        ///   <bulletList>
        ///     <bullet_item>选中—线和面要素将表示为要素质心（点）。</bullet_item><para/>
        ///     <bullet_item>未选中—输出几何将与输入要素的直线或面几何匹配。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_Most_Or_Least_Similar">
        /// <para>Most Or Least Similar</para>
        /// <para><xdoc>
        ///   <para>Specifies whether features that are most similar or most dissimilar to the Input Features To Match values will be identified.</para>
        ///   <bulletList>
        ///     <bullet_item>Most similar—Features that are most similar will be identified. This is the default.</bullet_item><para/>
        ///     <bullet_item>Least similar—Features that are most dissimilar will be identified.</bullet_item><para/>
        ///     <bullet_item>Both—Features that are most similar and features that are most dissimilar will both be identified.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否标识与“要匹配的输入要素”值最相似或最不相似的要素。</para>
        ///   <bulletList>
        ///     <bullet_item>最相似 - 将识别最相似的要素。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>最不相似 - 将识别最不相似的要素。</bullet_item><para/>
        ///     <bullet_item>两者 - 将同时识别最相似的要素和最不相似的要素。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_Match_Method">
        /// <para>Match Method</para>
        /// <para><xdoc>
        ///   <para>Specifies whether matching will be based on values, ranks, or cosine relationships.</para>
        ///   <bulletList>
        ///     <bullet_item>Attribute values—Matching will be based on the sum of squared standardized attribute value differences for all of the Attributes Of Interest values. This is the default.</bullet_item><para/>
        ///     <bullet_item>Ranked attribute values—Matching will be based on the sum of squared rank differences for all of the Attributes Of Interest values.</bullet_item><para/>
        ///     <bullet_item>Attribute profiles—Matching will be computed as a function of cosine similarity for all of the Attributes Of Interest values.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定匹配是基于值、秩还是余弦关系。</para>
        ///   <bulletList>
        ///     <bullet_item>属性值—匹配将基于所有感兴趣属性值的标准化属性值差的平方和。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>排名属性值 - 匹配将基于所有感兴趣属性值的排名差的平方和。</bullet_item><para/>
        ///     <bullet_item>属性配置文件 - 匹配将作为所有“感兴趣属性”值的余弦相似度的函数进行计算。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_Number_Of_Results">
        /// <para>Number Of Results</para>
        /// <para>The number of solution matches to find. Entering zero or a number larger than the total number of Candidate Features values will return rankings for all the candidate features. The default is 10.</para>
        /// <para>要查找的解决方案匹配项数。输入零或大于候选要素总数值的数字将返回所有候选要素的排名。默认值为 10。</para>
        /// </param>
        /// <param name="_Attributes_Of_Interest">
        /// <para>Attributes Of Interest</para>
        /// <para>The numeric attributes representing the matching criteria.</para>
        /// <para>表示匹配条件的数值属性。</para>
        /// </param>
        public SimilaritySearch(object _Input_Features_To_Match, object _Candidate_Features, object _Output_Features, _Collapse_Output_To_Points_value _Collapse_Output_To_Points, _Most_Or_Least_Similar_value _Most_Or_Least_Similar, _Match_Method_value _Match_Method, long _Number_Of_Results, List<object> _Attributes_Of_Interest)
        {
            this._Input_Features_To_Match = _Input_Features_To_Match;
            this._Candidate_Features = _Candidate_Features;
            this._Output_Features = _Output_Features;
            this._Collapse_Output_To_Points = _Collapse_Output_To_Points;
            this._Most_Or_Least_Similar = _Most_Or_Least_Similar;
            this._Match_Method = _Match_Method;
            this._Number_Of_Results = _Number_Of_Results;
            this._Attributes_Of_Interest = _Attributes_Of_Interest;
        }
        public override string ToolboxName => "Spatial Statistics Tools";

        public override string ToolName => "Similarity Search";

        public override string CallName => "stats.SimilaritySearch";

        public override List<string> AcceptEnvironments => ["MResolution", "MTolerance", "XYResolution", "XYTolerance", "ZResolution", "ZTolerance", "geographicTransformations", "outputCoordinateSystem", "outputMFlag", "outputZFlag", "outputZValue", "qualifiedFieldNames", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_Input_Features_To_Match, _Candidate_Features, _Output_Features, _Collapse_Output_To_Points.GetGPValue(), _Most_Or_Least_Similar.GetGPValue(), _Match_Method.GetGPValue(), _Number_Of_Results, _Attributes_Of_Interest, _Fields_To_Append_To_Output];

        /// <summary>
        /// <para>Input Features To Match</para>
        /// <para><xdoc>
        ///   <para>The layer, or a selection on a layer, containing the features you want to match; you are searching for other features that look like these features. When more than one feature is provided, matching is based on attribute averages.</para>
        ///   <para>
        ///     <para>When the Input Features To Match and Candidate Features values are from a single dataset layer, you can do the following:
        ///     <bulletList>
        ///       <bullet_item>Copy the layer to the Contents pane, making a duplicate layer.  </bullet_item><para/>
        ///       <bullet_item>Rename the duplicate layer.  </bullet_item><para/>
        ///       <bullet_item>On the renamed layer, make a selection or set a definition query for the reference features you want to match. Use the new layer created for the Input Features To Match parameter.  </bullet_item><para/>
        ///       <bullet_item>Apply a selection or set a definition query on the original layer so it excludes the reference features. This will be the layer to use for the Candidate Features parameter.  </bullet_item><para/>
        ///     </bulletList>
        ///     </para>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>图层或图层上的选择，包含要匹配的要素;您正在搜索类似于这些功能的其他功能。当提供多个要素时，匹配将基于属性平均值。</para>
        ///   <para>
        /// <para>当要匹配的输入要素和候选要素值来自单个数据集图层时，可以执行以下操作：
        ///     <bulletList>
        ///       <bullet_item>将图层复制到内容窗格，创建复制图层。</bullet_item><para/>
        ///       <bullet_item>重命名复制图层。</bullet_item><para/>
        ///       <bullet_item>在重命名的图层上，为要匹配的参考要素进行选择或设置定义查询。使用为要匹配的输入要素参数创建的新图层。 </bullet_item><para/>
        ///       <bullet_item>在原始图层上应用选择或设置定义查询，使其排除参考要素。这将是用于候选要素参数的图层。 </bullet_item><para/>
        ///     </bulletList>
        /// </para>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Features To Match")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Input_Features_To_Match { get; set; }


        /// <summary>
        /// <para>Candidate Features</para>
        /// <para><xdoc>
        ///   <para>The layer, or a selection on a layer, containing candidate matching features. The tool will check for features most similar (or most dissimilar) to the Input Features To Match values among these candidates.</para>
        ///   <para>When the Input Features To Match and Candidate Features values are from a single dataset layer, you can do the following:
        ///   <bulletList>
        ///     <bullet_item>Copy the layer to the Contents pane, making a duplicate layer.  </bullet_item><para/>
        ///     <bullet_item>Rename the duplicate layer.  </bullet_item><para/>
        ///     <bullet_item>On the renamed layer, make a selection or set a definition query for the reference features you want to match. Use the new layer created for the Input Features To Match parameter.  </bullet_item><para/>
        ///     <bullet_item>Apply a selection or set a definition query on the original layer so it excludes the reference features. This will be the layer to use for the Candidate Features parameter.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>图层或图层上的选择，包含候选匹配要素。该工具将检查与这些候选项中的输入要素匹配值最相似（或最不相似）的特征。</para>
        /// <para>当要匹配的输入要素和候选要素值来自单个数据集图层时，可以执行以下操作：
        ///   <bulletList>
        ///     <bullet_item>将图层复制到内容窗格，创建复制图层。</bullet_item><para/>
        ///     <bullet_item>重命名复制图层。</bullet_item><para/>
        ///     <bullet_item>在重命名的图层上，为要匹配的参考要素进行选择或设置定义查询。使用为要匹配的输入要素参数创建的新图层。 </bullet_item><para/>
        ///     <bullet_item>在原始图层上应用选择或设置定义查询，使其排除参考要素。这将是用于候选要素参数的图层。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Candidate Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Candidate_Features { get; set; }


        /// <summary>
        /// <para>Output Features</para>
        /// <para>The output feature class containing a record for each of the Input Features To Match values and for all the solution-matching features found.</para>
        /// <para>输出要素类，包含每个“要匹配的输入要素”值以及找到的所有解决方案匹配要素的记录。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _Output_Features { get; set; }


        /// <summary>
        /// <para>Collapse Output To Points</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the geometry for the Output Features parameter will be collapsed to points or will match the original geometry (lines or polygons) of the input features if the Input Features To Match and Candidate Features parameter values are both either lines or polygons. This parameter is only available with an Desktop Advanced license. Checking this parameter will improve tool performance for large line and polygon datasets.
        ///   <bulletList>
        ///     <bullet_item>Checked—The line and polygon features will be represented as feature centroids (points).  </bullet_item><para/>
        ///     <bullet_item>Unchecked—The output geometry will match the line or polygon geometry of the input features. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定输出要素参数的几何是折叠为点，还是在输入要素的原始几何（线或面）匹配（如果要匹配的输入要素和候选要素参数值均为直线或面）。此参数仅适用于 Desktop Advanced 许可证。选中此参数将提高大型线和面数据集的工具性能。
        ///   <bulletList>
        ///     <bullet_item>选中—线和面要素将表示为要素质心（点）。</bullet_item><para/>
        ///     <bullet_item>未选中—输出几何将与输入要素的直线或面几何匹配。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Collapse Output To Points")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Collapse_Output_To_Points_value _Collapse_Output_To_Points { get; set; }

        public enum _Collapse_Output_To_Points_value
        {
            /// <summary>
            /// <para>COLLAPSE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("COLLAPSE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_COLLAPSE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_COLLAPSE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Most Or Least Similar</para>
        /// <para><xdoc>
        ///   <para>Specifies whether features that are most similar or most dissimilar to the Input Features To Match values will be identified.</para>
        ///   <bulletList>
        ///     <bullet_item>Most similar—Features that are most similar will be identified. This is the default.</bullet_item><para/>
        ///     <bullet_item>Least similar—Features that are most dissimilar will be identified.</bullet_item><para/>
        ///     <bullet_item>Both—Features that are most similar and features that are most dissimilar will both be identified.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定是否标识与“要匹配的输入要素”值最相似或最不相似的要素。</para>
        ///   <bulletList>
        ///     <bullet_item>最相似 - 将识别最相似的要素。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>最不相似 - 将识别最不相似的要素。</bullet_item><para/>
        ///     <bullet_item>两者 - 将同时识别最相似的要素和最不相似的要素。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Most Or Least Similar")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Most_Or_Least_Similar_value _Most_Or_Least_Similar { get; set; }

        public enum _Most_Or_Least_Similar_value
        {
            /// <summary>
            /// <para>Most similar</para>
            /// <para>Most similar—Features that are most similar will be identified. This is the default.</para>
            /// <para>最相似 - 将识别最相似的要素。这是默认设置。</para>
            /// </summary>
            [Description("Most similar")]
            [GPEnumValue("MOST_SIMILAR")]
            _MOST_SIMILAR,

            /// <summary>
            /// <para>Least similar</para>
            /// <para>Least similar—Features that are most dissimilar will be identified.</para>
            /// <para>最不相似 - 将识别最不相似的要素。</para>
            /// </summary>
            [Description("Least similar")]
            [GPEnumValue("LEAST_SIMILAR")]
            _LEAST_SIMILAR,

            /// <summary>
            /// <para>Both</para>
            /// <para>Both—Features that are most similar and features that are most dissimilar will both be identified.</para>
            /// <para>两者 - 将同时识别最相似的要素和最不相似的要素。</para>
            /// </summary>
            [Description("Both")]
            [GPEnumValue("BOTH")]
            _BOTH,

        }

        /// <summary>
        /// <para>Match Method</para>
        /// <para><xdoc>
        ///   <para>Specifies whether matching will be based on values, ranks, or cosine relationships.</para>
        ///   <bulletList>
        ///     <bullet_item>Attribute values—Matching will be based on the sum of squared standardized attribute value differences for all of the Attributes Of Interest values. This is the default.</bullet_item><para/>
        ///     <bullet_item>Ranked attribute values—Matching will be based on the sum of squared rank differences for all of the Attributes Of Interest values.</bullet_item><para/>
        ///     <bullet_item>Attribute profiles—Matching will be computed as a function of cosine similarity for all of the Attributes Of Interest values.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定匹配是基于值、秩还是余弦关系。</para>
        ///   <bulletList>
        ///     <bullet_item>属性值—匹配将基于所有感兴趣属性值的标准化属性值差的平方和。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>排名属性值 - 匹配将基于所有感兴趣属性值的排名差的平方和。</bullet_item><para/>
        ///     <bullet_item>属性配置文件 - 匹配将作为所有“感兴趣属性”值的余弦相似度的函数进行计算。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Match Method")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _Match_Method_value _Match_Method { get; set; }

        public enum _Match_Method_value
        {
            /// <summary>
            /// <para>Attribute values</para>
            /// <para>Attribute values—Matching will be based on the sum of squared standardized attribute value differences for all of the Attributes Of Interest values. This is the default.</para>
            /// <para>属性值—匹配将基于所有感兴趣属性值的标准化属性值差的平方和。这是默认设置。</para>
            /// </summary>
            [Description("Attribute values")]
            [GPEnumValue("ATTRIBUTE_VALUES")]
            _ATTRIBUTE_VALUES,

            /// <summary>
            /// <para>Ranked attribute values</para>
            /// <para>Ranked attribute values—Matching will be based on the sum of squared rank differences for all of the Attributes Of Interest values.</para>
            /// <para>排名属性值 - 匹配将基于所有感兴趣属性值的排名差的平方和。</para>
            /// </summary>
            [Description("Ranked attribute values")]
            [GPEnumValue("RANKED_ATTRIBUTE_VALUES")]
            _RANKED_ATTRIBUTE_VALUES,

            /// <summary>
            /// <para>Attribute profiles</para>
            /// <para>Attribute profiles—Matching will be computed as a function of cosine similarity for all of the Attributes Of Interest values.</para>
            /// <para>属性配置文件 - 匹配将作为所有“感兴趣属性”值的余弦相似度的函数进行计算。</para>
            /// </summary>
            [Description("Attribute profiles")]
            [GPEnumValue("ATTRIBUTE_PROFILES")]
            _ATTRIBUTE_PROFILES,

        }

        /// <summary>
        /// <para>Number Of Results</para>
        /// <para>The number of solution matches to find. Entering zero or a number larger than the total number of Candidate Features values will return rankings for all the candidate features. The default is 10.</para>
        /// <para>要查找的解决方案匹配项数。输入零或大于候选要素总数值的数字将返回所有候选要素的排名。默认值为 10。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number Of Results")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public long _Number_Of_Results { get; set; }


        /// <summary>
        /// <para>Attributes Of Interest</para>
        /// <para>The numeric attributes representing the matching criteria.</para>
        /// <para>表示匹配条件的数值属性。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Attributes Of Interest")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _Attributes_Of_Interest { get; set; }


        /// <summary>
        /// <para>Fields To Append To Output</para>
        /// <para>The fields to include with the Output Features parameter. These fields are not used to determine similarity; they are only included in the Output Features parameter for reference.</para>
        /// <para>要包含在输出要素参数中的字段。这些字段不用于确定相似性;它们仅包含在输出要素参数中以供参考。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Fields To Append To Output")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _Fields_To_Append_To_Output { get; set; } = null;


        public SimilaritySearch SetEnv(object MResolution = null, object MTolerance = null, object XYResolution = null, object XYTolerance = null, object ZResolution = null, object ZTolerance = null, object geographicTransformations = null, object outputCoordinateSystem = null, object outputMFlag = null, object outputZFlag = null, object outputZValue = null, bool? qualifiedFieldNames = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(MResolution: MResolution, MTolerance: MTolerance, XYResolution: XYResolution, XYTolerance: XYTolerance, ZResolution: ZResolution, ZTolerance: ZTolerance, geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, outputMFlag: outputMFlag, outputZFlag: outputZFlag, outputZValue: outputZValue, qualifiedFieldNames: qualifiedFieldNames, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}